package com.yao.yaoojcodesandbox.security;

import java.security.Permission;

/**
 * 我的安全管理器
 *
 */
public class MySecurityManager extends SecurityManager{

    /**
     * 检测程序是否可以通过所有异常
     * @param perm   the requested permission.
     */
    @Override
    public void checkPermission(Permission perm) {
        System.out.println("默认不做任何限制");
        System.out.println(perm);
        //super.checkPermission(perm);
    }

    /**
     * 检测程序是否可以执行系统命令
     * @param cmd   the specified system command.
     * 不可以的话直接写异常
     */
    @Override
    public void checkExec(String cmd) {
        //super.checkExec(cmd);
        throw new SecurityException("checkExec权限异常"+cmd);
    }

    /**
     * 检测程序是否可以读取文件
     * @param file   the system-dependent file name.
     */
//    @Override
//    public void checkRead(String file) {
//        System.out.println(file);
//        //super.checkRead(file);
//        if(file.contains("D:\\星球项目\\OJ\\第一期\\yaooj-code-sandbox")){
//            return;
//        }
//        throw new SecurityException("checkRead权限异常"+file);
//    }

    /**
     * 检测程序是否可以写入文件
     * @param file   the system-dependent filename.
     */
//    @Override
//    public void checkWrite(String file) {
//        throw new SecurityException("checkWrite 权限异常：" + file);
//    }

    /**
     * 检测程序是否可以删除文件
     * @param file   the system-dependent filename.
     */
//    @Override
//    public void checkDelete(String file) {
//        //super.checkDelete(file);
//        throw new SecurityException("checkDelete权限异常"+file);
//    }

    /**
     * 检测程序是否可以连接网络
     * @param host   the host name port to connect to.
     * @param port   the protocol port to connect to.
     */
//    @Override
//    public void checkConnect(String host, int port) {
//        //super.checkConnect(host, port);
//        throw new SecurityException("checkConnect权限异常"+host+":"+port);
//    }
}
